import fitz  # PyMuPDF


def add_transparent_text_layer(pdf_path, output_path, text_data, font_path, font_size):
    # 打开PDF文件
    pdf_doc = fitz.open(pdf_path)
    new_pdf_doc = fitz.open()

    # 遍历原PDF的每一页
    for page_num in range(len(pdf_doc)):
        page = pdf_doc[page_num]

        # 创建一个新的PDF页面，用于添加文本层
        # new_page = new_pdf_doc.new_page()
        # new_page = fitz.Page()
        # new_page.set_mediabox(page.rect)

        # 获取页面上的绘图对象
        shape = page.new_shape()
        # draw = fitz.Draw(new_page)

        # 遍历文本数据，添加每段文本
        for text, position, rotation in text_data:
            rect = fitz.Rect(50, 50, 300, 60)
            fontsize = 50
            rc = -1
            while rc < 0:  # look for largest font size that makes the text fit
                rc = shape.insert_textbox(rect, text, fontsize=fontsize,color=(0, 0, 0, 0.1))
                fontsize -= 1

            # 设置文本属性
            # text_instance = shape.add_text(text, font_path, font_size)
            #
            # text_instance = fitz.TextInstance(text, font=font_path, size=font_size)
            # text_instance.set_color((0, 0, 0, 0.5))  # 设置颜色为黑色，透明度为0.5（半透明）
            # # 应用旋转矩阵
            # text_instance.set_matrix(fitz.Matrix(rotation).pre_translate(position[0], position[1]))
            #
            # # 在新页面上添加文本实例
            # draw.add_text_instance(text_instance)

            # 将原始PDF页面的内容复制到新页面上
        # new_page.append(page)
        shape.commit()

        # 执行绘图操作
        # draw.execute()

        # 将新页面添加到新的PDF文档中
        # pdf_doc.insert_page(page_num, new_page)

        # 保存新的PDF文档
    pdf_doc.save(output_path)

    # 关闭PDF文档
    pdf_doc.close()


# 文本数据，包含文本、位置和旋转角度
text_data = [
    ("Hello", (100, 750), 0),
    ("World", (300, 700), 45),
    # 可以继续添加更多文本段
]

# 调用函数，添加透明文本层
add_transparent_text_layer(r"D:\work\PythonProject\XerDocPaddleOcr\ppocr_img\pdf\input.pdf",
                           r"D:\work\PythonProject\XerDocPaddleOcr\ppocr_img\pdf\output.pdf",
                           text_data,
                           r"D:\work\PythonProject\XerDocPaddleOcr\ppocr_img\fonts\simfang.ttf",
                           24)
